import request from '../../../utils/request'

Page({
  /**
   * 页面的初始数据
   */
  data: {
    orderId: null,        // 订单ID
    orderDetail: null,    // 订单详情
    amount: 0,            // 应付金额
    loading: true,        // 加载状态
    remainingTime: '15:00', // 支付剩余时间
    timer: null           // 倒计时定时器
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 接收订单ID参数
    if (options.orderId) {
      this.setData({
        orderId: options.orderId
      });
      console.log('接收到订单ID：', options.orderId);
      
      // 加载订单详情（倒计时会在加载完订单后自动启动）
      this.loadOrderDetail();
    } else {
      wx.showToast({
        title: '订单ID不存在',
        icon: 'none'
      });
    }
  },

  /**
   * 加载订单详情
   */
  loadOrderDetail() {
    const that = this;
    const { orderId } = this.data;

    wx.showLoading({
      title: '加载中...',
    });

    request({
      url: `/le/management/orderDetail?orderId=${orderId}`,
      method: 'GET',
      success: (res) => {
        console.log('订单详情返回：', res);
        wx.hideLoading();
        
        if (res.statusCode === 200 && res.data.code === 200) {
          const orderDetail = res.data.data;
          
          that.setData({
            orderDetail: orderDetail,
            amount: orderDetail.price || 0,
            loading: false
          });

          // 如果是待支付状态，根据订单创建时间计算剩余时间
          if (orderDetail.orderStatus === '1' && orderDetail.createTime) {
            that.startCountdownFromCreateTime(orderDetail.createTime);
          }
        } else {
          that.setData({ loading: false });
          wx.showToast({
            title: res.data.msg || '加载订单失败',
            icon: 'none'
          });
          
          // 1.5秒后返回
          setTimeout(() => {
            wx.navigateBack();
          }, 1500);
        }
      },
      fail: (err) => {
        console.error('加载订单失败：', err);
        wx.hideLoading();
        that.setData({ loading: false });
        wx.showToast({
          title: '网络请求失败',
          icon: 'none'
        });
        
        // 1.5秒后返回
        setTimeout(() => {
          wx.navigateBack();
        }, 1500);
      }
    });
  },

  /**
   * 启动倒计时
   */
  startCountdown(seconds) {
    const that = this;
    let remaining = seconds;

    const updateTime = () => {
      const minutes = Math.floor(remaining / 60);
      const secs = remaining % 60;
      const timeStr = `${String(minutes).padStart(2, '0')}:${String(secs).padStart(2, '0')}`;
      
      that.setData({
        remainingTime: timeStr
      });

      if (remaining <= 0) {
        clearInterval(that.data.timer);
        wx.showToast({
          title: '支付超时',
          icon: 'none'
        });
        setTimeout(() => {
          wx.navigateBack();
        }, 1500);
        return;
      }

      remaining--;
    };

    // 立即执行一次
    updateTime();
    
    // 每秒更新一次
    const timer = setInterval(updateTime, 1000);
    this.setData({ timer });
  },

  /**
   * 确认支付
   */
  confirmPay() {
    const that = this;
    const { orderId, amount } = this.data;

    if (!orderId) {
      wx.showToast({
        title: '订单ID不存在',
        icon: 'none'
      });
      return;
    }

    // 显示确认弹窗
    wx.showModal({
      title: '确认支付',
      content: `确认支付 ¥${amount} 吗？`,
      success(res) {
        if (res.confirm) {
          // 用户点击确定，开始支付
          that.processPay();
        }
      }
    });
  },

  /**
   * 处理支付
   */
  processPay() {
    const that = this;
    const { orderId } = this.data;

    wx.showLoading({
      title: '支付中...',
    });

    // 调用后端支付接口
    request({
      url: `/le/management/payOrder?orderId=${orderId}`,
      method: 'POST',
      success: (res) => {
        console.log('支付返回：', res);
        wx.hideLoading();
        
        if (res.statusCode === 200 && res.data.code === 200) {
          // 清除倒计时
          if (that.data.timer) {
            clearInterval(that.data.timer);
          }
          
          wx.showToast({
            title: '支付成功',
            icon: 'success',
            duration: 2000
          });
          
          // 2秒后返回订单列表
          setTimeout(() => {
            wx.navigateBack();
          }, 2000);
        } else {
          wx.showToast({
            title: res.data.msg || '支付失败',
            icon: 'none'
          });
        }
      },
      fail: (err) => {
        console.error('支付失败：', err);
        wx.hideLoading();
        wx.showToast({
          title: '网络请求失败',
          icon: 'none'
        });
      }
    });
  },

  /**
   * 根据订单创建时间启动倒计时
   * 确保同一订单在不同页面、不同时间打开都显示正确的剩余时间
   */
  startCountdownFromCreateTime(createTime) {
    const that = this;
    
    // 解析订单创建时间
    const createDate = new Date(createTime.replace(/-/g, '/'));
    const now = new Date();
    
    // 计算已经过去的秒数
    const elapsedSeconds = Math.floor((now - createDate) / 1000);
    
    // 10分钟 = 600秒
    const totalSeconds = 10 * 60;
    
    // 计算剩余秒数
    let remainingSeconds = totalSeconds - elapsedSeconds;
    
    if (remainingSeconds <= 0) {
      // 已超时
      wx.showToast({
        title: '支付已超时',
        icon: 'none'
      });
      setTimeout(() => {
        wx.navigateBack();
      }, 1500);
      return;
    }
    
    // 启动倒计时
    this.startCountdown(remainingSeconds);
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {
    // 清除倒计时
    if (this.data.timer) {
      clearInterval(this.data.timer);
    }
  }
})